package routers

import (
	_ "Walker/admindocs"
	"Walker/app/http/controller/admin"
	"Walker/app/http/middleware"
	"github.com/gin-gonic/gin"
)

// @title           幼儿园扛把子管理后台
// @version         1.0
// @description     一个符合通用规范的权限管理平台
// @termsOfService  http://swagger.io/terms/
// @host      		www.myplatform.com
// @securityDefinitions.apikey ApiKeyAuth
// @in header
// @name Authorization

func InitAdminRouter(router *gin.Engine) *gin.Engine {

	//if global.ConfigValue.Get("AppDebug") == true {
	//	router.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
	//}

	adminGroup := router.Group("/admin")
	{
		adminGroup.GET("/login", (&admin.Login{}).Login)
		//查询mysql参数
		adminGroup.GET("/mysql", (&admin.Login{}).MysqlStats)
		//权限控制中间件
		//系统页面模块
		System := adminGroup.Group("/system_page").Use(middleware.TokenUser).Use(middleware.CasBin)
		{
			System.GET("", (&admin.SystemPage{}).Index)
			System.POST("/", (&admin.SystemPage{}).Store)
			System.PUT("/:id", (&admin.SystemPage{}).Update)
			System.DELETE("/:id", (&admin.SystemPage{}).Destroy)
			System.DELETE("/del_page_func/:id", (&admin.SystemPage{}).DelPageFunc)
			System.GET("/:id", (&admin.SystemPage{}).Show)
		}
		//系统方法模块
		SystemFunc := adminGroup.Group("/system_func").Use(middleware.TokenUser).Use(middleware.CasBin)
		{
			SystemFunc.GET("", (&admin.SystemFunc{}).Index)
			SystemFunc.POST("/", (&admin.SystemFunc{}).Store)
			SystemFunc.PUT("/:id", (&admin.SystemFunc{}).Update)
			SystemFunc.DELETE("/:id", (&admin.SystemFunc{}).Destroy)
			SystemFunc.GET("/:id", (&admin.SystemFunc{}).Show)
		}
		//系统角色模块
		SystemRole := adminGroup.Group("/system_role").Use(middleware.TokenUser).Use(middleware.CasBin)
		{
			SystemRole.GET("", (&admin.SystemRole{}).Index)
			SystemRole.POST("/", (&admin.SystemRole{}).Store)
			SystemRole.PUT("/:id", (&admin.SystemRole{}).Update)
			SystemRole.DELETE("/:id", (&admin.SystemRole{}).Destroy)
			SystemRole.GET("/:id", (&admin.SystemRole{}).Show)
		}
		//管理员角色
		SystemUser := adminGroup.Group("system_user").Use(middleware.TokenUser).Use(middleware.CasBin)
		{
			SystemUser.GET("", (&admin.User{}).Index)
			SystemUser.POST("/", (&admin.User{}).Store)
			SystemUser.PUT("/:id", (&admin.User{}).Update)
			SystemUser.DELETE("/:id", (&admin.User{}).Destroy)
			SystemUser.GET("/:id", (&admin.User{}).Show)
		}
	}
	return router
}
